home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / mkmsgsrc.zip / MKGLOBT.PAS < prev    next >
Pascal/Delphi Source File  |  1992-09-19  |  3KB  |  148 lines

  1. Unit MKGlobT;
  2.  
  3. {$I MKB.Def}
  4.  
  5. Interface
  6.  
  7. Type AddrType = Record                 {Used for Fido style addresses}
  8.   Zone: Word;
  9.   Net: Word;
  10.   Node: Word;
  11.   Point: Word;
  12.   End;
  13.  
  14. Type SecType = Record
  15.   Level: Word;                         {Security level}
  16.   Flags: LongInt;                      {32 bitmapped flags}
  17.   End;
  18.  
  19.  
  20. {$I Compiled.Inc}
  21.  
  22. Const
  23.   BbsVersion = 'Mythical Kingdom Bbs - Version 0.00 Beta';
  24.   Copyright  = 'Copyright 1992 by Mark May';
  25.   Contact    = 'Contact 1:110/290  (513)237-7737 HST/V32';
  26.  
  27.  
  28. Function AddrStr(Addr: AddrType): String;
  29. Function Access(USec: SecType; RSec: SecType): Boolean;
  30. Function EstimateXferTime(FS: LongInt; BaudRate: Word; Effic: Word): LongInt;
  31.   {Result in seconds}
  32. Function NameCrcCode(Str: String): LongInt; {Get CRC code for name}
  33. Function Flag2Str(Number: Byte): String;
  34. Function Str2Flag(St: String): Byte;
  35.  
  36. Var
  37.   StartUpPath: String[128];
  38.  
  39. Const
  40.   UseEms: Boolean = True;
  41.   LocalMode: Boolean = False;
  42.   LogToPrinter: Boolean = False;
  43.   ReLoad: Boolean = False;
  44.   NodeNumber: Byte = 1;
  45.   OverRidePort: Byte = 0;
  46.   OverRideBaud: Word = 0;
  47.   ExitErrorLevel: Byte = 0;
  48.   TimeToEvent: LongInt = 0;
  49.   ShellToMailer: Boolean = False;
  50.  
  51. Implementation
  52.  
  53. Uses MKString, Crc32;
  54.  
  55. Function Flag2Str(Number: Byte): String;
  56.   Var
  57.     Temp1: Byte;
  58.     Temp2: Byte;
  59.     i: Word;
  60.     TempStr: String[8];
  61.  
  62.   Begin
  63.   Temp1 := 0;
  64.   Temp2 := $01;
  65.   For i := 1 to 8 Do
  66.     Begin
  67.     If (Number and Temp2) <> 0 Then
  68.       TempStr[i] := 'X'
  69.     Else
  70.       TempStr[i] := '-';
  71.     Temp2 := Temp2 shl 1;
  72.     End;
  73.   TempStr[0] := #8;
  74.   Flag2Str := TempStr;
  75.   End;
  76.  
  77.  
  78. Function Str2Flag(St: String): Byte;
  79.   Var
  80.     i: Word;
  81.     Temp1: Byte;
  82.     Temp2: Byte;
  83.  
  84.   Begin
  85.   St := StripBoth(St,' ');
  86.   St := PadLeft(St,'-',8);
  87.   Temp1 := 0;
  88.   Temp2 := $01;
  89.   For i := 1 to 8 Do
  90.     Begin
  91.     If UpCase(St[i]) = 'X' Then
  92.       Inc(Temp1,Temp2);
  93.     Temp2 := Temp2 shl 1;
  94.     End;
  95.   Str2Flag := Temp1;
  96.   End;
  97.  
  98.  
  99.  
  100.  
  101. Function AddrStr(Addr: AddrType): String;
  102.   Begin
  103.   If Addr.Point = 0 Then
  104.     AddrStr := Long2Str(Addr.Zone) + ':' + Long2Str(Addr.Net) + '/' +
  105.       Long2Str(Addr.Node)
  106.   Else
  107.     AddrStr := Long2Str(Addr.Zone) + ':' + Long2Str(Addr.Net) + '/' +
  108.       Long2Str(Addr.Node) + '.' + Long2Str(Addr.Point);
  109.   End;
  110.  
  111.  
  112. Function Access(USec: SecType; RSec: SecType): Boolean;
  113.   Begin
  114.   If (USec.Level >=  RSec.Level) Then
  115.     Access :=  ((RSec.Flags and Not(USec.Flags)) = 0)
  116.   Else
  117.     Access := False;
  118.   End;
  119.  
  120.  
  121. Function EstimateXferTime(FS: LongInt; BaudRate: Word; Effic: Word): LongInt;
  122.   Begin
  123.   If BaudRate > 0 Then
  124.     EstimateXferTime := ((FS * 100) Div Effic) Div (BaudRate Div 10)
  125.   Else
  126.     EstimateXferTime := ((FS * 100) Div Effic) Div (960);
  127.   End;
  128.  
  129.  
  130. Function NameCrcCode(Str: String): LongInt;
  131.   Var
  132.     NCode: LongInt;
  133.     i: WOrd;
  134.  
  135.   Begin
  136.   NCode := UpdC32(Length(Str),$ffffffff);
  137.   i := 1;
  138.   While i < Length(Str) Do
  139.     Begin
  140.     NCode := Updc32(Ord(UpCase(Str[i])), NCode);
  141.     Inc(i);
  142.     End;
  143.   NameCrcCode := NCode;
  144.   End;
  145.  
  146.  
  147. End.
  148.